/**
 * 遍历字典中的每个字符串，d[index]
 * 两个指针i和j分别从头到尾遍历s和d[index]
 * 
 * 随着指针增加，如果j指针所指的元素与i指针所指的元素相同，那么j++
 * 当i指完的时，j也指完，那么当前元素d[index]是符合要求的子串
 * 
 * 至于取最佳元素更新：
 *      1.默认result = ""
 *      2.如果当前data[index].len > result.len 更新
 *      3.或者：
 *          当前data[index].len == result.len && 字典序 data[index]>result
 *          更新
 * 
 * 提问：
 *      i j 指针指向的时
 *      按理说
 *      i++: abpcplea
 *      j   plea
 *  ooooooooooooooomy god !
 *  我终于知道我为什么错了！
 *  我以为是只要材料够 顺序可以重组的那种！！
 *  事实上是：
 *      d[index] 的字符是否包含在s中，s可以通过删除某些字符达到要求
 *      注意只是删除，不能调整位置。
 *      意思是 s : apple
 *     d[index]  : ale √  alp x    
 */


let s = "abpcplea";
let d =  ["ale","apple","monkey","plea"]
findLongestWord(s,d);
function findLongestWord(s, d) {
    let result = "";

    for(let index = 0;index<d.length;index++){
        let i,j;
        for(i =0,j=0;i<s.length&&j<d[index].length;i++){
            if(s[i]===d[index][j]){
                j++;
            }
        }
        if(j===d[index].length&&(result.length<d[index].length||result.length===d[index].length&&result>d[index])){
            result = d[index];
        }
    }
    return result;
}